#pragma once

class DIActor;
class DGame;

namespace Weapons {

class DWeapon
{
public:
    enum Type { eNoWeapon, eFirebolt, eLaser };
    DWeapon(boost::shared_ptr<DIActor> source);
    virtual ~DWeapon(void);

    void fire(boost::shared_ptr<DGame> game, const vec2& origin, const vec2& dir, float dt);

    void setType(Type weaponType);
    void setLevel(unsigned int weaponLevel);
protected:
    boost::weak_ptr<DIActor> m_source;
    Type m_eType;
    unsigned int m_nLevel;
    float m_fFireDelay;
    float m_fTimer;
};

} // namespace Weapons